package cn.lbd.arithmetic.sort;

import org.junit.Test;

import java.util.Arrays;

/*
冒泡排序规则
(1) 一共进行 数组的大小-1 次 大的循环
(2)每一趟排序的次数在逐渐的减少
(3) 如果我们发现在某趟排序中，没有发生一次交换， 可以提前结束冒泡排序。这个就是优化
*/
public class BubbleSort {

    public static void sort(int[] array){
        boolean flag;
        for (int i = 0; i < array.length - 1; i++) {
            flag=false;
            for (int j = 0; j < array.length-1-i; j++) {
                if(array[j]>array[j+1]){
                    int temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                    flag = true;
                }
            }
            if (!flag){
                break;
            }
            System.out.println("第"+(i+1)+"轮排序："+Arrays.toString(array));
        }
    }

    public static void main(String[] args) {
        int[] array={17,3,25,14,20,9};
        sort(array);
    }

    //80000数据9.516秒
    @Test
    public void batchTest(){
        int[] arr = new int[80000];
        for(int i =0; i < 80000;i++) {
            arr[i] = (int)(Math.random() * 8000000);
        }

        long start = System.currentTimeMillis();

        sort(arr);

        long end = System.currentTimeMillis();

        System.out.println((double)(end-start)/1000);
    }
}
